package com.wtgroup.demo.leetcode.q075_颜色分类_荷兰国旗问题;

/**
 * @author dafei
 * @version 0.1
 * @date 2021/4/23 9:38
 */
public class Q075_LC {


    /**
     * [车撞系列]
     * @param nums 0 1 2
     */
    public void sortColors(int[] nums) {
        if (nums.length==1) {
            return;
        }
        int p0 = 0, p2 = nums.length - 1;
        int i = 0;
        while (i<=p2) {
            if (nums[i]==0) { // 红色
                swap(nums, i, p0++);
                i++; // 前面交换来的必定为1, 可以这里++, 也可以等到下一轮自动会++
            } else if (nums[i] == 2) { // 蓝色
                swap(nums, i, p2--);
                // i 不动, 下一乱, 要看看后面换来的这个值是啥
            } else { // 1 , 白色
                i++;
            }
        }
    }

    private void swap(int[] arr, int i, int j) {
        int tmp = arr[i];
        arr[i] = arr[j];
        arr[j] = tmp;
    }
}
